package org.batallademusica.dao;

import com.movired.utiles.llavesPrimarias.LlavePrimaria;

/**
 * Métodos genéricos para todos los DAOs
 * @author david
 *
 */
public interface DAO<Entidad> {
	/**
	 * Crea la nueva entidad que se pasa. 
	 * La llave primaria generada se queda fijada por referencia. 
	 * @param entidad
	 */
	void crear(Entidad entidad);
	/**
	 * Borra una entidad por llave primaria directamente en BBDDs sin cargarla a memoria
	 * @param pk
	 */
	void borrar(LlavePrimaria pk);
	/**
	 * Borra la entidad que se pasa como parametro de BBDDs
	 * @param entidad
	 */
	void borrar(Entidad entidad);
	
	/**
	 * Salva los posibles cambios de la entidad en BBDDs
	 * @param entidad
	 */
	void salvar(Entidad entidad);
	
	/**
	 * Recupera una entidad por su llave primaria. 
	 * @param pk
	 * @return
	 */
	Entidad buscarPorPK(LlavePrimaria pk);
}
